/**
 * 搜索历史
 * 全局只有一个
 * 需要保证全局唯一性
 * 单例模式
 * 思路
 * @author white
 * @date 2021/9/22
 */
class HistoryKeyword {

    static MAX_ITEM_COUNT = 20
    static KEY = 'key'
    keywords = []


    /**
     * 1、思路考虑清除
     * 2、数据结构辅助思考
     * 3、
     */
    constructor() {
        if (typeof HistoryKeyword.instance == 'object') {
            return HistoryKeyword.instance
        }
        HistoryKeyword.instance = this
        this.keywords = this._getLocalKeywords()
        return this
    }

    // 不存在实例属性
    // 单例模式
    /*
      1、数组去重
      2、数组大小
     */
    save(keyword) {
        // true 符合条件
        const item = this.keywords.filter(k => {
            return k === keyword
        })
        // 存在相等的不进行添加
        if (item.length !== 0) {
            return
        }
        if (this.keywords.length >= HistoryKeyword.MAX_ITEM_COUNT) {
            this.keywords.pop()
            // push 放到尾部
            // unshift 添加到尾部
            // pop 最后一个弹出
        }
        this.keywords.unshift(keyword)
        this._refreshLocal();
    }

    get() {
        return this.keywords
    }

    clear() {
        this.keywords = []
        this._refreshLocal()
    }

    _refreshLocal() {
        wx.setStorageSync(HistoryKeyword.KEY, this.keywords)
    }

    _getLocalKeywords() {
        const keywords = wx.getStorageSync(HistoryKeyword.KEY)
        if (!keywords) {
            wx.setStorageSync(HistoryKeyword.KEY, [])
            return []
        }
        return keywords
    }
}

export {
    HistoryKeyword
}